import { useChatStore } from "@/store";

/**
 * 提供聊天相关操作的钩子
 * 封装了聊天数据的获取、添加和更新操作
 */
export function useChat() {
	// 获取聊天存储状态
	const chatStore = useChatStore();

	/**
	 * 根据UUID和索引获取特定聊天记录
	 * @param uuid 聊天记录的唯一标识符
	 * @param index 聊天记录在列表中的索引位置
	 * @returns 返回找到的聊天记录，如果未找到则返回null
	 */
	const getChatByUuidAndIndex = (uuid: number, index: number) => {
		return chatStore.getChatByUuidAndIndex(uuid, index);
	};

	/**
	 * 添加新的聊天记录到指定UUID的聊天列表中
	 * @param uuid 聊天列表的唯一标识符
	 * @param chat 要添加的聊天记录对象
	 */
	const addChat = (uuid: number, chat: Chat.Chat) => {
		chatStore.addChatByUuid(uuid, chat);
	};

	/**
	 * 更新指定UUID和索引位置的聊天记录
	 * @param uuid 聊天记录的唯一标识符
	 * @param index 聊天记录在列表中的索引位置
	 * @param chat 更新后的完整聊天记录对象
	 */
	const updateChat = (uuid: number, index: number, chat: Chat.Chat) => {
		chatStore.updateChatByUuid(uuid, index, chat);
	};

	/**
	 * 部分更新指定UUID和索引位置的聊天记录
	 * 允许只更新聊天记录的部分字段
	 * @param uuid 聊天记录的唯一标识符
	 * @param index 聊天记录在列表中的索引位置
	 * @param chat 包含要更新字段的聊天记录部分对象
	 */
	const updateChatSome = (
		uuid: number,
		index: number,
		chat: Partial<Chat.Chat>
	) => {
		chatStore.updateChatSomeByUuid(uuid, index, chat);
	};

	// 返回聊天操作函数
	return {
		addChat,
		updateChat,
		updateChatSome,
		getChatByUuidAndIndex,
	};
}
